else
self->uniforms = gsk_ngl_uniform_state_new ();
- /* Determine max texture size immediately and restore context */
+ /* Determine max texture size and other limitations immediately
+ * and restore context
+ */
gdk_gl_context_make_current (context);
glGetIntegerv (GL_MAX_TEXTURE_SIZE, &self->max_texture_size);
+ glGetIntegerv (GL_MAX_ELEMENTS_VERTICES, &self->max_elements_vertices);
return g_steal_pointer (&self);
}
last_batch->any.viewport.height == batch->any.viewport.height &&
last_batch->draw.framebuffer == batch->draw.framebuffer &&
last_batch->draw.vbo_offset + last_batch->draw.vbo_count == batch->draw.vbo_offset &&
+ last_batch->draw.vbo_count + batch->draw.vbo_count <= self->max_elements_vertices &&
snapshots_equal (self, last_batch, batch))
{
last_batch->draw.vbo_count += batch->draw.vbo_count;
*/
int max_texture_size;
+ /* Discovered max element count. We must not create batches that contain
+ * more vertices than this number.
+ */
+
+ int max_elements_vertices;
+
/* The index of the last batch in @batches, which may not be the element
* at the end of the array, as batches can be reordered. This is used to
* update the "next" index when adding a new batch.